<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>prototype 继承</title>
</head>
<body>
    <script>
        function Animal() {
            this.species = '动物';
        }
        Animal.prototype = {
            sayHi: function() {
                console.log('hi');
            }
        }
        function Cat(name, color) {
            // 
            console.log(this);
            // apply 用于指定函数运行时this 指向， 被绑定了
            // 第一个参数是this 指向的对象
            Animal.apply(this); // 函数运行， 指定函数内部的this 是 cat 实例  没有apply this 指向window 因为没有绑定this没有new 
            this.name = name;
            this.color = color;
        }
        Cat.prototype = new Animal();
        const cat = new Cat('加菲猫','橘色');
        cat.sayHi();
        console.log(cat, '////',cat.__proto__); // cat.__proto__本来要指向Cat.prototype的，但是Cat.prototype是Animal的实例对象，所以cat.__proto__指向Animal实例对象而不是Animal.prototype
    </script>
</body>
</html>